package other.third.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import other.third.entity.base.Verify;

import java.util.Optional;

/**
 * 根据物联网号查询详细位置信息的响应类
 *
 * @author 王霄
 * @date 2021/4/20
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class GetLocationByPhoneResponse extends Verify {

    /**
     * 返回结果标识
     * 0：当MSID_TYPE为0，且POSITIONRESULT为2时，表示定位成功;
     * 其他值：根据POSITIONRESULT值判断定位结果。
     */
    private String MSID_TYPE;
    /**
     * 定位码号
     * 例如：1064910000000
     */
    private String MSID;
    /**
     * 定位信息列表
     * 1表示成功获取定位信息
     */
    private String LATITUDETYPE;
    /**
     * 定义漫游城市
     * 例如：25表示南京
     */
    private String ROAMCITY;
    /**
     * 经度
     * 经度值，例如118.836639
     */
    private String LONGITUDE;
    /**
     * 定位时间
     * 格式YYYYMMDDHHMMSS例如：20141227191636
     */
    private String LOCALTIME;
    /**
     * 定位结果值
     * 2：定位成功
     * 226：用户关机
     * 227：用户不在服务区
     * 225：用户停机
     * 245：用户没有在定位平台开户
     * 104：基站信息获取失败或者NB卡处于休眠态
     * 其他值：定位失败
     */
    private String POSITIONRESULT;
    /**
     * 位置信息返回的扇区半径信息
     * 例如：0
     */
    private String RADIUS;
    /**
     * 定义位置来源
     * 例如：6
     */
    private String POSOUR;
    /**
     * 纬度
     * 纬度值，例如32.343864
     */
    private String LATITUDE;
    /**
     * 用于表示返回经纬度所对应的GIS的区号
     * 该区号为VMSCID所对应的区号，也即要查找的GIS所对应的区号，例如999
     */
    private String AREACODE;
    /**
     * 经度类型
     * 定位成功，返回0
     */
    private String LONGITUDETYPE;


    @Override
    public boolean verify() {
        return Optional.of(this)
                .filter(x -> "0".equals(x.getMSID_TYPE()) && "2".equals(x.getPOSITIONRESULT()))
                .isPresent();
    }
}
